package com.shop2cn.iapi.accounting.parameter;


/**
 * 货币类型
 */
public enum CurrencyTypeEnum {

    /**
     * 0:未定义
     */
    Undefined(0, "未定义"),
    /**
     * 1：人民币
     */
    CNY(1, "人民币"),

    /**
     * 2：英镑
     */
    GBP(2, "英镑"),

    /**
     * 3:港币
     */
    HKD(3, "港币"),

    /**
     * 4:美元
     */
    USD(4, "美元"),

    /**
     * 5:瑞士法郎
     */
    CHF(5, "瑞士法郎"),

    /**
     * 6:新加坡元
     */
    SGD(6, "新加坡元"),

    /**
     * 7:瑞典克朗
     */
    SEK(7, "瑞典克朗"),

    /**
     * 8:丹麦克朗
     */
    DKK(8, "丹麦克朗"),

    /**
     * 9:挪威克朗
     */
    NOK(9, "挪威克朗"),

    /**
     * 10:日元
     */
    JPY(10, "日元"),

    /**
     * 11:加拿大元
     */
    CAD(11, "加拿大元"),

    /**
     * 12:澳大利亚元
     */
    AUD(12, "澳大利亚元"),

    /**
     * 13:欧元
     */
    EUR(13, "欧元"),

    /**
     * 14:新西兰元
     */
    NZD(14, "新西兰元"),

    /**
     * 15:俄罗斯卢布
     */
    RUB(15, "俄罗斯卢布"),

    /**
     * 16:澳门元
     */
    MOP(16, "澳门元"),

    /**
     * 17:马来西亚林吉特
     */
    MYR(17, "马来西亚林吉特"),

    /**
     * 18:印尼卢比
     */
    IDR(18, "印尼卢比"),

    /**
     * 19:韩元
     */
    KRW(19, "韩元"),

    /**
     * 20:菲律宾比索
     */
    PHP(20, "菲律宾比索"),

    /**
     * 21:离岸人民币
     */
    CNH(21, "离岸人民币"),

    /**
     * 1001:注册保证金专用人民币
     */
    CNYForRegister(1001, "注册保证金专用人民币");

    private int code;

    private String message;

    CurrencyTypeEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    /**
     * 通过代码获取枚举项
     *
     * @param code
     * @return
     */
    public static CurrencyTypeEnum getByCode(int code) {
        for (CurrencyTypeEnum currencyTypeEnum : CurrencyTypeEnum.values()) {
            if (currencyTypeEnum.getCode() == code) {
                return currencyTypeEnum;
            }
        }
        return null;
    }

    /**
     * 通过名称获取枚举项
     *
     * @param name 枚举名称
     * @return
     */
    public static CurrencyTypeEnum getByName(String name) {
        for (CurrencyTypeEnum currencyTypeEnum : CurrencyTypeEnum.values()) {
            if (currencyTypeEnum.name().equalsIgnoreCase(name)) {
                return currencyTypeEnum;
            }
        }
        return null;
    }

    /**
     * 通过枚举值或枚举名称获取枚举项
     *
     * @param value 枚举值或枚举名称
     * @return
     */
    public static CurrencyTypeEnum getValue(String value) {
        if (value == null)
            return null;
        value = value.trim();
        for (CurrencyTypeEnum currencyTypeEnum : CurrencyTypeEnum.values()) {
            if (currencyTypeEnum.name().equalsIgnoreCase(value) || String.valueOf(currencyTypeEnum.getCode()).equalsIgnoreCase(value)) {
                return currencyTypeEnum;
            }
        }
        return null;
    }

}
